Software Defined Networking (SDN) is an approach to computer networking that employs a split architecture network in which the forwarding (data) plane is decoupled from the control plane. The use of a split architecture network simplifies the switches implementing the forwarding plane by shifting the intelligence and decision making of the network into one or more controller that oversee the switches. SDN facilitates rapid and open innovation at the network layer by providing a programmable network infrastructure.
OpenFlow is a protocol that enables controllers and switches in a software defined network to communicate with each other. An OpenFlow switch includes one or more flow tables for performing packet forwarding. Each flow table in the switch includes a set of flow entries. Each flow entry includes a match field for matching packets and a set of instructions to apply to matching packets. An OpenFlow controller can use OpenFlow to add, update, and delete flow entries in flow tables. Thus, OpenFlow enables a controller to dynamically program flow control policies in the network.
OpenFlow switches typically process a flow by matching packets of the flow against flow entries in a flow table in sequential order, from first to last. As a result, packet processing for some flows (e.g., flows that match flow entries that are lower in the flow table) take longer to match. This can result in poor packet processing performance (e.g., increased latency) for these flows.